//
//                                  _oo8oo_
//                                 o8888888o
//                                 88" . "88
//                                 (| -_- |)
//                                 0\  =  /0
//                               ___/'==='\___
//                             .' \\|     |// '.
//                            / \\|||  :  |||// \
//                           / _||||| -:- |||||_ \
//                          |   | \\\  -  /// |   |
//                          | \_|  ''\---/''  |_/ |
//                          \  .-\__  '-'  __/-.  /
//                        ___'. .'  /--.--\  '. .'___
//                     ."" '<  '.___\_<|>_/___.'  >' "".
//                    | | :  `- \`.:`\ _ /`:.`/ -`  : | |
//                    \  \ `-.   \_ __\ /__ _/   .-` /  /
//                =====`-.____`.___ \_____/ ___.`____.-`=====
//                                  `=---=`
//
//
//               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//                          佛祖保佑         永无bug

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger,TimeIntervalType) {
    TimeIntervalTypeWeek,
    TimeIntervalTypeMonth,
    TimeIntervalTypeYear
};

@interface HJTDateTool : NSObject

+ (BOOL)isLargeThenOneDay:(NSInteger)curTime;
+ (BOOL)isNowYear:(NSInteger)curTime;

/**
 *  NSDate -> yyyy-MM-dd
 *
 *  @param date 时间
 *
 *  @return yyyy-MM-dd格式的字符串
 */
+ (NSString *)dateForFormatOneWithDate:(NSDate *)date;

/**
 *  后台int类型的时间戳转换成字符串 MM月dd日
 *
 *  @param timeStamp 后台的时间戳
 *
 *  @return MM月dd日格式的字符串
 */
+ (NSString *)dateForFormatOneWithTimeStamp:(NSString *)timeStamp;

// format  eg: yyyy-MM-dd
+ (NSString *)dateForFormatOneWithTimeStamp:(NSString *)timeStamp withFormat:(NSString *)format;

// 和时期是没有关系的
+ (NSString *)dateForFormatWithTimeStamp:(NSString *)timeStamp withFormat:(NSString *)format;

+ (NSString *)dateForFormatWithTs:(NSTimeInterval)ts withFormat:(NSString *)format;

/**
 *  根据传入的开始日期与结束日期判断日期是否选择合法
 *
 *  @param startDate 开始日期
 *  @param endDate   结束日期
 *
 *  @return 是否合法（当前日期 <= 开始日期 <= 结束日期）
 */
+ (NSString *)dateJudgeWithStartDate:(NSString *)startDate endData:(NSString *)endDate;

/**
 根据传入的时间戳返回几分钟前 几小时前 几天前....
 
 @param dateStr 传入的时间戳字符串
 @return 返回 XX前
 */
+ (NSString *)translateDate:(NSString *)dateStr;

//ios返回的是秒为单位  java是毫秒为单位
+(NSString *)translateDateWithJavaTime:(NSTimeInterval)time;


/**
 时间戳转时间

 @param time 时间戳
 @param limit 最大几天，如5，最大会写5天前，小于0表示只近回时间格式数据
 @param formatter 时间格式,nil，表示只显示limit天之前
 @return 时间格式数据
 */
+(NSString *)translateDateWithJavaTime:(NSTimeInterval)time limit:(NSInteger)limit formatter:(NSString *)formatter;

/**
 @param time time 时间戳
 @return  yyyy.mm.dd 字符串
 */
+(NSString *)translateDateToSimpleStrWithJavaTime:(NSTimeInterval)time;

/**
 yyyy-MM-dd -> NSDate

 @param timeStr timeStr 标准时间
 @return 时间戳
 */
+(long)returnNSDateWithStandardTime:(NSString*)timeStr;


// 标准格式
+ (NSTimeInterval)dateIntevalWithISOFormatString:(NSString *)dateString ;
+ (NSDate *)dateWithISOFormatString:(NSString *)dateString;

/// 当前日期 yyyy-MM-dd
+ (NSString*)currenDate;

/// 获取当天指定时间的时间戳
+ (NSTimeInterval)timeSpan:(NSInteger)hour minute:(NSInteger)minute second:(NSInteger)second;

/// 格式化unix时间戳
+ (NSString *)formateUnixTime:(NSTimeInterval)unixTime format:(NSString *)format;

+ (NSDate *)dateFromUnixTime:(NSTimeInterval)unixTime;

/*
 根据传入的时间戳返回今天、昨天、前天、具体的某天yyyy.MM.dd
 @param unixTime 传入的时间戳
 @return 返回 @{dayDis:天数差距,timeDis://时间差距}
 */
+ (NSDictionary *)translateUnixTime:(NSTimeInterval)unixTime;

/// 计算年龄
+ (NSInteger)calcAge:(NSTimeInterval)birthday;

/*
 根据传入的时间格式，返回需要的时间格式
 @param dateTime 时间:2018-01-01 10:00:12
 @param fromFormat 格式：yyyy-MM-dd HH:mm:ss
 @param toFormat 格式：MM.dd
 */
+ (NSString *)formateDateTime:(NSString *)dateTime fromFormat:(NSString *)fromFormat toFormat:(NSString *)toFormat;

/*
 获取时间区间
 */
+ (NSArray *)getDateInternal:(TimeIntervalType)type internalDate:(NSDate *)internalDate value:(NSInteger)value format:(NSString *)format;

/*
 将时间字符串转为Date
 */
+ (NSDate *)formateDateTime:(NSString *)dateTime format:(NSString *)format;

/*
 格式化时间
 */
+ (NSString *)formateDate:(NSDate *)date format:(NSString *)format;



/**
 获取某月的最后一天
 */
+ (NSDate *)getMonthLastDayWith:(NSDate *)date;

//2.3.2
/**
 漫画按照今天、昨天、一周内、更早归类排序
 */
+ (NSString *)translateUnixTime:(NSTimeInterval)unixTime format:(NSString *)format;
//3.0.4
/**
 消息/时间为今天显示几点几分，前天或昨天显示“前天”或“昨天”其余展示年月日
 */
+ (NSDictionary *)translateUnixTimeFroDetail:(NSTimeInterval)unixTime;


@end

